home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / DClap / DView.h < prev    next >
Text File  |  1996-07-05  |  6KB  |  163 lines

  1. // DView.h
  2. // d.g.gilbert
  3.  
  4. #ifndef _DVIEW_
  5. #define _DVIEW_
  6.  
  7. #include "DTaskMaster.h"
  8. #include "DViewTypes.h"
  9. #include "DList.h"
  10. #include "Dvibrant.h"
  11.  
  12.  
  13. //generally used global constants, only ones used by Vibrant
  14. enum Justify { justleft = 'l', justcenter = 'c', justright = 'r' }; 
  15.  
  16. // All views are some kind of Nlm Vibrant object, since we rely
  17. // on the Vibrant library for all cross-platform user-interface code.
  18. // DView class, and its subclasses, link Vibrant objects to this DClAp 
  19. // object library.  A principle of this library is to hide all the 
  20. // Vibrant C objects inside C++ objects.  Therefore all Nlm_ calls 
  21. // dealing w/ any kind of graphics/user-event object are enclosed
  22. // in a DView(subclass) method, and all Nlm_ handles (objects) are
  23. // likewise enclosed in a DView object.
  24.  
  25.  
  26. class DWindow;
  27.  
  28. class DView : public DTaskMaster
  29. {    
  30. public:
  31.     enum    ResizeMethod    { fixed, matchsuper, relsuper, moveinsuper, calculate };
  32.     
  33.     Nlm_Handle        fNlmObject;         
  34.     long                    fKind;            
  35.     Nlm_RecT            fViewrect;
  36.     Nlm_RecT            fSizerange;
  37.     ResizeMethod    fHresize;
  38.     ResizeMethod    fVresize;
  39.     
  40.     DView( long id, Nlm_Handle nlmObject, long kind = 0, 
  41.                  DTaskMaster* superior = NULL, DList* subordinates = NULL);
  42.     DView( long id, Nlm_Handle nlmObject, ResizeMethod Hresize = fixed, ResizeMethod Vresize = fixed,
  43.                  long kind = 0, DTaskMaster* superior = NULL, DList* subordinates = NULL);
  44.     virtual ~DView(void);
  45.     virtual void Initialize();
  46.     
  47.     virtual Boolean IsMyViewAction(DView* action) {
  48.         return DTaskMaster::IsMyAction(action); // name-class change, remove IsMyViewAction?
  49.         }
  50.         
  51.         // do we want these methods which are just name changes ?? 
  52.     virtual DView* FindSubview(long id)  { return (DView*)FindSubordinate(id); } 
  53.     virtual DView* FindSuperview(long id) { return (DView*)FindSuperior(id); }  
  54.     
  55.     Nlm_Handle GetNlmObject(void) { return fNlmObject; }        
  56.     void SetNlmObject(Nlm_Handle nlmObject);
  57.     virtual void DeleteSubviews();
  58.     virtual void RemoveSubview( DView* aSubview, Nlm_Boolean doDeleteIt);
  59.  
  60.     virtual void Enable(void)  { Nlm_Enable(fNlmObject); }        
  61.     virtual void Disable(void) { Nlm_Disable(fNlmObject); }
  62.     virtual Boolean IsEnabled(void) { return Nlm_Enabled(fNlmObject); }
  63.     virtual Boolean IsVisible(void) { return Nlm_Visible(fNlmObject); }
  64.     virtual void Show(void);
  65.     virtual void Hide(void);
  66.     virtual void Invalidate(void);
  67.     virtual void InvalRect(Nlm_RecT& r);
  68.  
  69.             // Select is used to bring windows to the front, to select a dialog text item, 
  70.             // or to select a particular display object for use as a terminal display
  71.     virtual void Select(void) { Nlm_Select(fNlmObject); }
  72.  
  73.     virtual void SetTitle( char* title);
  74.     virtual Nlm_CharPtr GetTitle(char* title = NULL, ulong maxsize = 256);
  75.     virtual    Nlm_CharPtr    GetText() { return GetTitle(); }
  76.  
  77.     virtual void  SetValue(short value) { Nlm_SetValue(fNlmObject, value); }
  78.     virtual short GetValue(void) { return Nlm_GetValue(fNlmObject); }
  79.  
  80.     virtual void SetStatus( Boolean status) { Nlm_SetStatus(fNlmObject, status); }
  81.     virtual Boolean GetStatus(void) { return Nlm_GetStatus(fNlmObject); }
  82.  
  83.         //SetOffset and GetOffset manipulate the scroll bar offsets for any object
  84.     virtual void SetOffset(short horiz, short vert) { Nlm_SetOffset(fNlmObject, horiz, vert); }
  85.     virtual void GetOffset(short& horiz, short& vert) { Nlm_GetOffset(fNlmObject, &horiz, &vert); }
  86.  
  87.     virtual void SetPosition(Nlm_RecT& r);
  88.     virtual void GetPosition(Nlm_RecT& r);
  89.             // this generally is same as GetPosition, but fewer proc calls - but may differ ?
  90.     virtual void ViewRect(Nlm_RecT& r);
  91.  
  92.     virtual void ResizeSubviews(DView* superview, Nlm_PoinT sizechange);
  93.     virtual void Resize(DView* superview, Nlm_PoinT sizechange);
  94.             // ResizeMethod == calculate
  95.     virtual short CalculateNewSize(Boolean vertaxis, short old, short delta) { return old+delta; } 
  96.     void SetResize( ResizeMethod Hresize, ResizeMethod Vresize) { fHresize= Hresize; fVresize = Vresize; }
  97.     void SetSizerange(Nlm_RecT r);
  98.     virtual void SizeToSuperview( DView* super, Boolean horiz, Boolean vert);
  99.             
  100.         
  101.         // clear the value or remove all children from a group.    
  102.     virtual void Reset() { Nlm_Reset(fNlmObject); }
  103.         
  104.     virtual DTaskMaster* GetSuperior(void)  { return fSuperior; }
  105.     virtual Nlm_Handle GetNlmSuperior(void) { return Nlm_Parent(fNlmObject); }
  106.     virtual void SetSuperior(Nlm_Handle newSuper);
  107.  
  108.     virtual DWindow* GetWindow(void) { 
  109.         return (DWindow*) Nlm_GetObject( (Nlm_GraphiC)Nlm_ParentWindow(fNlmObject));
  110.         }
  111.     virtual Nlm_WindoW GetNlmWindow(void) { return Nlm_ParentWindow(fNlmObject); }
  112.     virtual void SetWindow( DWindow* newWindow);
  113.  
  114.     virtual Boolean AreAllSuperiorsEnabled() { return Nlm_AllParentsEnabled(fNlmObject); }
  115.     virtual Boolean AreAllSuperiorsVisible() { return Nlm_AllParentsVisible(fNlmObject); }
  116.         
  117.         
  118.         // Subview Positioning
  119.     virtual void NextSubviewToRight(void)   { Nlm_Advance(fNlmObject); }
  120.     virtual void NextSubviewBelowLeft(void) { Nlm_Break(fNlmObject); }
  121.  
  122.     virtual void SetNextPosition(Nlm_PoinT nps) { Nlm_SetNextPosition(fNlmObject, nps); }
  123.     virtual void GetNextPosition(Nlm_PointPtr nps) {  Nlm_GetNextPosition(fNlmObject, nps); }
  124.  
  125.  
  126.         // following used by only some subclasses of DView, but are put here for simplicity.
  127.         // at this time, i don't know what kind of error results from misuse.
  128.         
  129.         //SetRange is used to set the page increment and maximum values for a scroll bar.     
  130.     virtual void SetRange(short pgUp, short pgDn, short max) {  
  131.         Nlm_SetRange(fNlmObject, pgUp, pgDn, max);
  132.         }
  133.  
  134.         // for groups, menus & such which are lists of items
  135.     virtual short CountItems(void) { return Nlm_CountItems(fNlmObject); }
  136.  
  137.     virtual short GetNextItem(short prev) {  
  138.         return Nlm_GetNextItem(fNlmObject, prev);
  139.         }
  140.         
  141.     virtual void SetItemTitle(short item, char* title) {  
  142.         Nlm_SetItemTitle(fNlmObject, item, title);
  143.         }
  144.     virtual char* GetItemTitle(short item, char* title = NULL, size_t maxsize = 256) {  
  145.         if (title==NULL) title= new char[maxsize];
  146.         Nlm_GetItemTitle(fNlmObject, item, title, maxsize);
  147.         return title;
  148.         }
  149.  
  150.     virtual void SetItemStatus(short item, Boolean status) {  
  151.         Nlm_SetItemStatus(fNlmObject, item, status);
  152.         }
  153.     virtual Boolean GetItemStatus(short item) {  
  154.         return Nlm_GetItemStatus(fNlmObject, item);
  155.         }
  156.  
  157. };
  158.  
  159. typedef void (DView::*ViewMethod)(void);     // used elsewhere
  160.  
  161.  
  162. #endif
  163.